/*
 * Esse programa simplesmente trata um arquivo xls, buscando o mesmo e retirando seus dados célula por celula
 * Depois ele joga todos estes dados em um arquivo txt
 * Ainda depois temos a leitura do mesmo arquivo txt para utilização de seus dados dentro do ambiente do netbeans.
 */
import java.io.*;
import jxl.*;
import jxl.read.biff.BiffException;
import jxl.write.*;
import jxl.write.Number;
import java.util.*;

/**
 *
 * @author André
 */
public class Main {



    public static void main(String[] args) throws BiffException, IOException, WriteException
    {
        xlstotxt();
        //txttoxls();
        //array();
        //comparar();
    }


    public static void array() throws IOException, BiffException
    {
        Workbook workbook1 = Workbook.getWorkbook(new File("comparar1.xls"));
        Workbook workbook2 = Workbook.getWorkbook(new File("comparar2.xls"));

        Sheet sheet1 = workbook1.getSheet(0);
        Sheet sheet2 = workbook2.getSheet(0);

        BufferedWriter saida = new BufferedWriter(new FileWriter("comparando.txt"));

        for (int desviosemana=4; desviosemana<9; desviosemana++)
        {
            List cidades = new ArrayList();

            System.out.println(desviosemana-3+"ª semana:");
            saida.write(desviosemana-3+"ª semana:");
            saida.newLine();

            for (int i=4; i<14; i++)                     //varre todas as linhas da coluna "C" de "comparar2.xls"
            {
                Cell w1 = sheet2.getCell(desviosemana,i);
                String stringw1 = w1.getContents();
                if(!stringw1.equals("0"))
                {
                    Cell z1 = sheet2.getCell(2,i);
                    String stringz1 = z1.getContents();
                    for (int j=0; j<10; j++)                    //varre todas as linhas da coluna "B" de "comparar1.xls"
                    {
                        Cell y1 = sheet1.getCell(1,j);
                        String stringy1 = y1.getContents();
                        if(stringz1.equals(stringy1))
                        {
                            Cell x1 = sheet1.getCell(0,j);
                            String stringx1 = x1.getContents();

                            cidades.add(Integer.parseInt(stringx1));         //salva o numero da cidade no array]
                            
                        }
                    }
                }
            }
            for (int primeiracoluna = 0; primeiracoluna < cidades.size(); primeiracoluna++)
            {
                if(cidades.size()!=1)
                {
                    for (int segundacoluna = primeiracoluna+1; segundacoluna < cidades.size(); segundacoluna++)
                    {
                        System.out.println(cidades.get(primeiracoluna)+" "+cidades.get(segundacoluna));
                        saida.write(cidades.get(primeiracoluna)+" "+cidades.get(segundacoluna));
                        saida.newLine();
                    }
                }
                else
                {    
                    System.out.println(cidades.get(primeiracoluna));
                    saida.write(cidades.get(primeiracoluna)+"");
                    saida.newLine();
                }
            }
            saida.newLine();
            System.out.println();
        }
        saida.close();
        workbook1.close();
        workbook2.close();
    }


    public static void comparar() throws IOException, BiffException
    {
        Workbook workbook1 = Workbook.getWorkbook(new File("comparar1.xls"));
        Workbook workbook2 = Workbook.getWorkbook(new File("comparar2.xls"));

        Sheet sheet1 = workbook1.getSheet(0);
        Sheet sheet2 = workbook2.getSheet(0);
        int inicio = 0;
        BufferedWriter saida = new BufferedWriter(new FileWriter("comparando.txt"));
        for (int numerocoluna=4; numerocoluna<9; numerocoluna++)                     //varre todas as linhas da coluna "C" de "comparar2.xls"
        {
            if(inicio!=0)
            {
                System.out.println();
                System.out.println();
                saida.newLine();
                saida.newLine();
            }
            else
            {
                inicio++;
            }
            int k = 0;
            saida.write(numerocoluna-3+"ª semana:");
            saida.newLine();
            System.out.println(numerocoluna-3+"ª semana:");

            for (int i=4; i<14; i++)                     //varre todas as linhas da coluna "C" de "comparar2.xls"
            {
                Cell w1 = sheet2.getCell(numerocoluna,i);
                String stringw1 = w1.getContents();
                if(stringw1.equals("1"))
                {
                    Cell z1 = sheet2.getCell(2,i);
                    String stringz1 = z1.getContents();
                    for (int j=0; j<10; j++)                    //varre todas as linhas da coluna "B" de "comparar1.xls"
                    {
                        Cell y1 = sheet1.getCell(1,j);
                        String stringy1 = y1.getContents();
                        if(stringz1.equals(stringy1))
                        {
                            Cell x1 = sheet1.getCell(0,j);
                            String stringx1 = x1.getContents();

                            if (k != 0)
                            {
                                saida.write(stringx1);
                                saida.newLine();
                                saida.write(stringx1+" ");
                                System.out.print(stringx1+"\n"+stringx1+" ");
                            }
                            else
                            {
                                saida.write(stringx1+" ");
                                System.out.print(stringx1+" ");
                                k++;
                            }
                            //System.out.println("A cidade de número "+stringx1+" e nome "+stringz1+" teve um caso de dengue!");
                        }
                    }
                }
            }
        }
        saida.close();
        workbook1.close();
        workbook2.close();
        System.out.println();
    }

    public static void xlstotxt() throws BiffException, IOException
    {
        Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));

        Sheet sheet = workbook.getSheet(0);

        Cell a1 = sheet.getCell(0,0);
        Cell b2 = sheet.getCell(1,1);
        Cell c2 = sheet.getCell(2,1);

        String stringa1 = a1.getContents();
        String stringb2 = b2.getContents();
        String stringc2 = c2.getContents();

        System.out.println(stringa1);       //teste de integridade dos caracteres.
        System.out.println(stringb2);       //teste de integridade dos caracteres.
        System.out.println(stringc2);       //teste de integridade dos caracteres.


        // Salvando o conteúdo dos mesmos em um arquivo txt.

        System.out.println("Salvar para arquivo (teste.txt)");

        try
        {
            BufferedWriter saida = new BufferedWriter(new FileWriter("teste.txt"));
            saida.write(stringa1);
            saida.newLine();
            saida.write(stringb2);
            saida.newLine();
            saida.write(stringc2);
            saida.close();
        }
        catch (IOException e)
        {
            System.out.println("Erro ao gravar o arquivo\n");
            e.printStackTrace();
        }

        workbook.close();


    }    //fim do método xlstotxt()

    public static void txttoxls() throws BiffException, IOException, WriteException
    {
        WritableWorkbook workbook = Workbook.createWorkbook(new File("teste.xls"));
        WritableSheet sheet = workbook.createSheet("First Sheet", 0);
        File FILE = new File("teste1.txt");
        String x;

        try
        {
            System.out.println("Eu entrei aki");
            Scanner scanner = new Scanner(FILE);
            x = scanner.nextLine();          // nextInt() para inteiro
            System.out.println(x);
            String X = "";
            String Y = "";

            //Este if serve para varrer linhas na quantidade de cidades presente no arquivo txt.
            if (x.charAt(1)!=' ')
            {                
                for (int j=0; j < x.length(); j++)
                {
                    if (x.charAt(j)=='0'||x.charAt(j)=='1'||x.charAt(j)=='2'||
                            x.charAt(j)=='3'||x.charAt(j)=='4'||x.charAt(j)=='5'||
                            x.charAt(j)=='6'||x.charAt(j)=='7'||x.charAt(j)=='8'||x.charAt(j)=='9')
                    {
                        X = X + x.charAt(j);
                    }
                }                        
            }    //fim do if.

            for(int linha=0; linha<Integer.parseInt(X); linha++)
            {
                int coluna=0;
                int quebra=0;
                x = scanner.nextLine();
                System.out.println(Y);                  //Responsável somente por impressão no console.
                for (int j=0; j < x.length(); j++)
                {
                    if(quebra==2)
                    {
                        System.out.print(Y);                //Responsável somente por impressão no console.
                        Label label = new Label(coluna, linha, Y);
                        sheet.addCell(label);
                        Y = "";
                        break;
                    }
                    if(x.charAt(j)!='"')
                    {
                        if (quebra==0)
                        {
                            if(x.charAt(j)!=' ')            //Controla para q n seja adicionado " " em Y
                            Y = Y + x.charAt(j);            //o q tornaria impossível converter string em int
                        }
                        else
                        Y = Y + x.charAt(j);
                    }
                    else
                        quebra++;
                    if( (quebra==0||quebra==2) &&x.charAt(j)==' ')
                    {
                        System.out.print(Y);                        //Responsável somente por impressão no console.
                        Number number = new Number(coluna, linha, Integer.parseInt(Y));
                        sheet.addCell(number);
                        coluna++;
                        Y = "";
                    }
                }                
            }

        scanner.close();
        }
        catch (NoSuchElementException nex)
        {
             //String line = scanner.nextLine();
             //System.err.println("Error in line: " + line);
        }
        workbook.write();
        workbook.close();

    }   //fim do método txttoxls()
}